As both the speed and functionality of computer systems increase, along with the size and capacity of their corresponding program and data storage devices, the size and complexity of software applications or projects executing on such systems continue to follow a similar trend. To develop a typical large-scale application, such as an online commercial service website, a large team of software developers working in parallel to generate the application is often employed, along with a testing group to ensure that the resulting software performs according to a predefined set of functionality, reliability, and performance specifications.
To allow the software developers to generate their specific portions of the project concurrently, each member of the development team often possesses access to an integrated development environment (IDE) to facilitate the development and testing tasks. In some implementations, an IDE is an integrated set of software tools often including a source code editor to allow a developer to write and edit one or more source code “modules” or files in a programming language of choice, a compiler to transform the written source code into machine-level instructions understandable by the computing processor or platform on which the application is to be executed, and a linker to link the various compiled modules together so that the resulting application may be executed on the chosen platform. In some cases, the IDE may also include build automation tools that allow the development team to automate the compilation, linking, and other tasks normally associated with generating the resulting executable binary image. The IDE may also include a debugger to aid the developer in ascertaining the cause of problems or errors associated with execution of the application.
Even with the functionality normally provided by an IDE, the initial generation of source files, along with a workable compilation and linking environment, is typically difficult and time-consuming, even if the development project is based on a preexisting application. Further, even once the initial set of modules is generated and verified, incremental changes to the existing modules, and the addition of new modules, by a developer may often introduce problems or faults to the overall application that impede the progress of other developers.